package fr.bordeaux1.planingdesetudiants.view;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.wb.swt.SWTResourceManager;

import fr.bordeaux1.planingdesetudiants.model.AccumulateurErreur;

public class DetailDesErreursDialog extends TitleAreaDialog {
	private Table tableAvertissements;
	private Table tableErreurs;
	private AccumulateurErreur accumulateurErreur;
	/**
	 * Create the dialog.
	 * @param parentShell
	 */
	public DetailDesErreursDialog(Shell parentShell,AccumulateurErreur accumulateur) {
		super(parentShell);
		setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE | SWT.PRIMARY_MODAL);
		accumulateurErreur = accumulateur;
	}

	/**
	 * Create contents of the dialog.
	 * @param parent
	 */
	@Override
	protected Control createDialogArea(Composite parent) {
		
		
		int nbErreurs = accumulateurErreur.getErreurs().size();
		int nbAvertissements = accumulateurErreur.getAvertissements().size();
		if(nbErreurs==0 && nbAvertissements==0){
			setMessage("Aucun problème trouvé !");
			setTitleImage(SWTResourceManager.getImage(DetailDesErreursDialog.class, "/must_have_icon_set/Positive/Positive_48x48.png"));
		}else{
			setTitleImage(SWTResourceManager.getImage(DetailDesErreursDialog.class, "/must_have_icon_set/Negative/Negative_48x48.png"));
			if(nbErreurs==0){
				setMessage(""+nbAvertissements+" avertissements.");
			}else if(nbAvertissements==0){
				
			}else{
				setMessage(""+nbErreurs+" erreurs et "+nbAvertissements+" avertissements.");
			}
		}
		
		setTitle("Résultat de la recherche d'erreurs");
		Composite area = (Composite) super.createDialogArea(parent);
		Composite container = new Composite(area, SWT.NONE);
		container.setLayout(new FillLayout(SWT.HORIZONTAL));
		container.setLayoutData(new GridData(GridData.FILL_BOTH));
		
		TabFolder tabFolder = new TabFolder(container, SWT.NONE);
		
		TabItem tabErreurs = new TabItem(tabFolder, SWT.NONE);
		tabErreurs.setImage(SWTResourceManager.getImage(DetailDesErreursDialog.class, "/error.png"));
		tabErreurs.setText("Erreurs ("+nbErreurs+")");
		
		tableErreurs = new Table(tabFolder, SWT.BORDER | SWT.FULL_SELECTION);
		tabErreurs.setControl(tableErreurs);
		tableErreurs.setHeaderVisible(true);
		tableErreurs.setLinesVisible(true);
		
		TabItem tabAvertissements = new TabItem(tabFolder, SWT.NONE);
		tabAvertissements.setImage(SWTResourceManager.getImage(DetailDesErreursDialog.class, "/warning.png"));
		tabAvertissements.setText("Avertissements ("+nbAvertissements+")");
		
		tableAvertissements = new Table(tabFolder, SWT.BORDER | SWT.FULL_SELECTION);
		tabAvertissements.setControl(tableAvertissements);
		tableAvertissements.setHeaderVisible(true);
		tableAvertissements.setLinesVisible(true);
		
		for (String err : accumulateurErreur.getErreurs()) {
			TableItem item = new TableItem(tableErreurs,SWT.NONE);
			item.setText(err);
		}
		for (String avt : accumulateurErreur.getAvertissements()) {
			TableItem item = new TableItem(tableAvertissements,SWT.NONE);
			item.setText(avt);
		}

		return area;
	}

	/**
	 * Create contents of the button bar.
	 * @param parent
	 */
	@Override
	protected void createButtonsForButtonBar(Composite parent) {
		createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
				true);
	}

	/**
	 * Return the initial size of the dialog.
	 */
	@Override
	protected Point getInitialSize() {
		return new Point(675, 334);
	}
}
